The UDP protocol is a connectionless protocol in the open system interconnection OSI reference model. It is in the fourth layer, the transport layer, and is the upper layer of the IP protocol. It is used to process data packets, mainly to compress network data traffic in the form of data packets, providing a simple transaction-oriented information delivery service. It does not provide packet grouping or assembling, nor can it reorder data packets.
According to the present disclosure, the UDP protocol acceleration is usually divided into two stages. At the first stage, the UDP protocol traffic is directed to a remote acceleration server and, at the second stage, the acceleration server acts as a proxy for the UDP traffic. The common practice at the first stage is to redirect the UDP protocol traffic to a local proxy, and the local proxy encapsulates and forwards the UDP packets to the remote acceleration server. In order for the acceleration server to properly act as the proxy for the UDP traffic, the local proxy needs to send the data packet and its original destination address to the acceleration server. Since UDP is connectionless, when the packet is redirected to the local proxy, the original destination address cannot be obtained in the user mode through the existing socket function.
Currently, the specific method for accelerating the UDP protocol traffic passing through the router is to redirect the traffic to the local proxy by setting rules in the Iptables in the router, and to obtain the original destination address of the UDP packet in the local proxy through the Linux transparent proxy TPROXY module. The local proxy forwards the packet and original destination address information to the acceleration server. Because the TPROXY module operates in the pre-route PREROUTING link of the network filter Netfilter, while the traffic generated by local applications does not pass through the PREROUTING link, this scheme cannot accelerate the UDP packets generated by local applications.
On the other hand, although routers can accelerate the traffic that flows through routers, the routers cannot differentiate the traffic of different terminals. For example, set-top boxes, mobile phones, and other terminal devices all access acceleration routers, and routers cannot distinguish the traffic of different terminal devices. Therefore, the acceleration function needs to be installed in the terminals.